/**
 * 公共常量定义
 * 所有模块共享的常量
 */

/**
 * 存储键名常量
 * 定义扩展使用的所有存储键名
 */
export const STORAGE_KEYS = {
  /** 扩展配置数据存储键 */
  CONFIG: "extension_config",
  /** 用户数据存储键 */
  USER_DATA: "user_data",
  /** 缓存数据存储键 */
  CACHE: "cache_data",
  /** 使用统计数据存储键 */
  STATS: "usage_stats",
} as const;

/**
 * Content Script 匹配规则
 * 定义扩展在哪些网站上运行content script
 */
export const CONTENT_SCRIPT_MATCHES = ["*://*.xiaohongshu.com/*"] as const;

/**
 * CSS 选择器常量
 * 定义常用的CSS选择器，用于页面元素查找
 */
export const SELECTORS = {
  /** 链接元素选择器 */
  LINKS: "a[href]",
  /** 图片元素选择器 */
  IMAGES: "img",
  /** 按钮元素选择器 */
  BUTTONS: 'button, input[type="button"], input[type="submit"]',
  /** 表单元素选择器 */
  FORMS: "form",
  /** 标题元素选择器 */
  HEADERS: "h1, h2, h3, h4, h5, h6",
} as const;

/**
 * UI 常量配置
 * 主要用于 Content Script 的UI组件样式配置
 */
export const UI_CONFIG = {
  /** 浮动按钮配置 */
  FLOATING_BUTTON: {
    /** 按钮尺寸 */
    size: "50px",
    /** 按钮位置 */
    position: { top: "20px", right: "20px" },
    /** z-index层级 */
    zIndex: 10000,
    /** 背景颜色 */
    backgroundColor: "#4CAF50",
    /** 文字颜色 */
    color: "white",
  },
  /** 扩展面板配置 */
  PANEL: {
    /** 面板宽度 */
    width: "350px",
    /** 面板最大高度 */
    maxHeight: "500px",
    /** 面板位置 */
    position: { top: "70px", right: "20px" },
    /** z-index层级 */
    zIndex: 10001,
    /** 背景颜色 */
    backgroundColor: "white",
    /** 圆角半径 */
    borderRadius: "8px",
  },
  /** 动画配置 */
  ANIMATION: {
    /** 淡入动画持续时间(毫秒) */
    fadeInDuration: 300,
    /** 滑入动画持续时间(毫秒) */
    slideInDuration: 250,
  },
} as const;

/**
 * 通知配置
 * 定义浏览器通知的相关配置参数
 */
export const NOTIFICATION_CONFIG = {
  /** 默认通知显示时长(毫秒) */
  DEFAULT_DURATION: 5000,
  /** 通知类型映射 */
  TYPES: {
    /** 信息通知 */
    INFO: "basic",
    /** 成功通知 */
    SUCCESS: "basic",
    /** 警告通知 */
    WARNING: "basic",
    /** 错误通知 */
    ERROR: "basic",
  },
} as const;

/**
 * 调试模式开关
 * 根据环境变量判断是否启用调试模式
 */
export const DEBUG = process.env.NODE_ENV === "development";

/**
 * 日志配置
 * 控制扩展的日志输出行为
 */
export const LOGGER_CONFIG = {
  /** 是否启用日志 */
  enabled: DEBUG,
  /** 日志级别 */
  level: DEBUG ? "debug" : "warn",
  /** 日志前缀 */
  prefix: "[WXT-Extension]",
} as const;
